package ru.bytedog.oiot.counter.bot.service.command;

import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.objects.Message;
import ru.bytedog.oiot.counter.bot.bean.BotAnswer;

import java.util.stream.Collectors;
import java.util.stream.Stream;

@Service
public class HelpCommand implements BotCommand {

    public static final String DESCRIPTION = "Для работы бота необходимо указать токен и идентификатор учетной записи OIOT.RU (после ввода учетных данных, эти сообщения будут удалены). Их можно найти в личном кабинете сервиса.";

    @Override
    public CommandEnum getCommand() {
        return CommandEnum.HELP;
    }

    @Override
    public BotAnswer commandProcess(Message message) {
        BotAnswer answer = new BotAnswer();
        answer.setChatId(String.valueOf(message.getChatId()));
        answer.setMessage("Бот предназначен для получения последних показателей счетчиков из сервиса OIOT.RU.\n" +
                DESCRIPTION
                + "\n\n Возможные команды:\n"
                + Stream.of(CommandEnum.values())
                .filter(command -> !command.isService())
                .map(command -> String.format("- %s - %s", command.getValue(), command.getDescription()))
                .collect(Collectors.joining("\n"))
                + "\nКогда токен и идентификатор пользователя установлены запросить последние показатели счетчиков можно отправкой любого текстового сообщения боту."
                + "\n\nЕсли возникли вопросы по работе бота, рад буду на них ответить: @evgeniykostilev.");
        return answer;
    }

}
